const axios = require('axios');
const fs = require('fs');
const path = require('path');

// 服务器配置
const SERVER_URL = 'http://localhost:5000';

// 测试函数
async function runTests() {
  console.log('=== WechatAiWriter AI 服务器 API 测试 ===\n');

  try {
    // 1. 测试健康检查
    console.log('1. 测试健康检查 API...');
    const healthResponse = await axios.get(`${SERVER_URL}/api/health`);
    console.log('✅ 健康检查成功:', healthResponse.data);
    console.log();

    // 2. 测试内容生成 API
    console.log('2. 测试内容生成 API...');
    const generateResponse = await axios.post(`${SERVER_URL}/api/generate`, {
      topic: '人工智能发展趋势',
      type: 'article'
    });
    console.log('✅ 内容生成成功!');
    console.log('   生成的标题:', generateResponse.data.title);
    console.log('   内容长度:', generateResponse.data.content.length, '字符');
    console.log('   生成时间:', generateResponse.data.timestamp);
    console.log('   来源:', generateResponse.data.source);
    console.log();

    // 保存生成的内容到文件
    const contentToSave = generateResponse.data.content;
    const outputDir = path.join(__dirname, 'test-output');
    if (!fs.existsSync(outputDir)) {
      fs.mkdirSync(outputDir);
    }
    fs.writeFileSync(path.join(outputDir, 'generated-article.md'), contentToSave);
    console.log('📝 生成的文章已保存到:', path.join(outputDir, 'generated-article.md'));
    console.log();

    // 3. 测试导出 API - Markdown 格式
    console.log('3. 测试导出 API - Markdown 格式...');
    const exportMarkdownResponse = await axios.post(`${SERVER_URL}/api/export`, {
      content: contentToSave,
      format: 'markdown',
      filename: 'exported-article.md'
    });
    console.log('✅ Markdown 导出成功!');
    console.log('   内容类型:', exportMarkdownResponse.data.contentType);
    console.log('   文件名:', exportMarkdownResponse.data.filename);
    fs.writeFileSync(path.join(outputDir, 'exported-markdown.md'), exportMarkdownResponse.data.content);
    console.log('📝 Markdown 格式已保存');
    console.log();

    // 4. 测试导出 API - HTML 格式
    console.log('4. 测试导出 API - HTML 格式...');
    const exportHtmlResponse = await axios.post(`${SERVER_URL}/api/export`, {
      content: contentToSave,
      format: 'html',
      filename: 'exported-article.html'
    });
    console.log('✅ HTML 导出成功!');
    console.log('   内容类型:', exportHtmlResponse.data.contentType);
    console.log('   文件名:', exportHtmlResponse.data.filename);
    fs.writeFileSync(path.join(outputDir, 'exported-html.html'), exportHtmlResponse.data.content);
    console.log('📝 HTML 格式已保存');
    console.log();

    // 5. 测试导出 API - 微信格式
    console.log('5. 测试导出 API - 微信格式...');
    const exportWechatResponse = await axios.post(`${SERVER_URL}/api/export`, {
      content: contentToSave,
      format: 'wechat',
      filename: 'wechat-article.html'
    });
    console.log('✅ 微信格式导出成功!');
    console.log('   内容类型:', exportWechatResponse.data.contentType);
    console.log('   文件名:', exportWechatResponse.data.filename);
    fs.writeFileSync(path.join(outputDir, 'wechat-format.html'), exportWechatResponse.data.content);
    console.log('📝 微信格式已保存');
    console.log();

    console.log('=== 所有测试完成! ===');
    console.log('✅ 服务器 API 功能正常');
    console.log('📁 测试输出文件位于:', outputDir);
    console.log('注意: 由于 DeepSeek API 余额不足，系统已自动切换到模拟内容生成模式。');

  } catch (error) {
    console.error('❌ 测试失败:', error.message);
    if (error.response) {
      console.error('   状态码:', error.response.status);
      console.error('   响应数据:', error.response.data);
    }
    console.error('=== 测试未通过 ===');
  }
}

// 先启动服务器，然后运行测试
console.log('正在启动测试服务器...');
const server = require('./index.js');

// 等待服务器启动后再运行测试
setTimeout(() => {
  runTests().then(() => {
    console.log('\n测试脚本执行完毕，正在关闭服务器...');
    process.exit(0);
  }).catch(err => {
    console.error('测试脚本出错:', err);
    process.exit(1);
  });
}, 2000);